package fr.miage.orleans.aar.ejb;

import fr.miage.orleans.aar.modele.Equipe;
import fr.miage.orleans.aar.modele.MatchTour;
import fr.miage.orleans.aar.modele.Tournoi;
import fr.miage.orleans.aar.modele.valueobject.ValueObjectEquipeDetail;
import fr.miage.orleans.aar.modele.valueobject.ValueObjectEquipeLight;
import fr.miage.orleans.aar.modele.valueobject.ValueObjectMatch;
import fr.miage.orleans.aar.modele.valueobject.ValueObjectTournoi;

import java.util.ArrayList;
import java.util.Collection;

import javax.ejb.EJB;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

/**
 *
 * @author Steve Cancès <steve.cances@gmail.com>
 */
@Stateless
@LocalBean
public class FacadeGettersVoBean implements FacadeGettersVoLocal {

    @PersistenceContext(unitName = FacadeUtils.PERSISTENCE_CONTEXT_UNIT_NAME)
    private EntityManager entityManager;

    @EJB
    private FacadeGettersBean facadeGetters;

    @Override
    public Collection<ValueObjectEquipeDetail> getVoAllEquipes() {
	Collection<Equipe> equipeTournoi = this.facadeGetters.getAllEquipes();

	Collection<ValueObjectEquipeDetail> voEquipe = new ArrayList<>();
	for (Equipe e : equipeTournoi) {
	    voEquipe.add(new ValueObjectEquipeDetail(e));
	}
	return voEquipe;
    }

    @Override
    public ValueObjectEquipeDetail getVoEquipeDetail(int id) {
	ValueObjectEquipeDetail voED = null;
	Equipe equipe = this.facadeGetters.getEquipeById(id);
	if (equipe != null) {
	    voED = new ValueObjectEquipeDetail(equipe);
	}

	return voED;
    }

    @Override
    public ValueObjectEquipeLight getVoEquipeLight(int id) {
	ValueObjectEquipeLight voEquipe = null;
	Equipe equipe = this.facadeGetters.getEquipeById(id);
	if (equipe != null) {
	    voEquipe = new ValueObjectEquipeLight(equipe);
	}
	return voEquipe;
    }

    @Override
    public ValueObjectTournoi getVoTournoi(int idTournoi) {
	Tournoi t = this.facadeGetters.getTournoiById(idTournoi);
	return new ValueObjectTournoi(t);
    }

    @Override
    public ValueObjectMatch getVOMatch(int idMatch) {
	ValueObjectMatch vom = null;
	MatchTour matchTour = this.facadeGetters.getMatchTourById(idMatch);
	System.out.println("idMatch2 : "+idMatch);
	System.out.println("matchTour : "+matchTour);
	if (matchTour != null) {
	    vom = new ValueObjectMatch(matchTour);
	}
	return vom;

    }
}
